import pandas as pd


# 自动转换Excel到字典格式
def excel_to_dicts(file_path):
    df = pd.read_excel(file_path)
    # 自动处理空值并转换类型
    df = df.where(pd.notnull(df), None).astype('object')
    # 使用更高效的转换方式
    return df.to_dict('records')

def query_csv(file_path, encoding='utf-8'):
    # print(os.getcwd())
    # 读取CSV文件，尝试使用指定编码
    try:
        df = pd.read_csv(file_path, encoding=encoding)
        return df
    except UnicodeDecodeError:
        # print(f"指定的编码 {encoding} 无法解码文件，尝试其他编码...")
        encodings_to_try = ['gbk', 'latin1']
        for enc in encodings_to_try:
            try:
                df = pd.read_csv(file_path, encoding=enc)
                # print(f"使用编码 {enc} 成功读取文件。")
                return df
            except UnicodeDecodeError:
                continue
        raise UnicodeDecodeError("尝试了多种编码，仍无法解码文件。")

    # 调用函数查询CSV文件
    # return data_frame = query_csv(file_path)
    
# 获取赛事基本信息csv文件
def getEventsInfo(path):
    data_frame = query_csv(path)
    # # print(data_frame)
    return data_frame
    

# 获取赛事价格csv文件
def getEventsPrice(path):
    data_frame = query_csv(path)
    # print(data_frame)
    return data_frame

# 获取赛事剩余票量csv文件
def getEventsTikets(path):
    data_frame = query_csv(path)
    # print(data_frame)
    return data_frame

# # 示例查询1：查询满足某条件的行
# # 假设表格中有一列叫 'column_name'，查询该列值为 'target_value' 的行
# target_column = 'Event Name'
# target_value = '马德里大师赛'
# result1 = data_frame[data_frame[target_column] == target_value]
# print(result1)

# # 示例查询2：查询特定列的数据
# # 假设查询 'column1' 和 'column2' 列的数据
# columns_to_select = ['Types of Sports Events', 'Event Name']
# result2 = data_frame[columns_to_select]
# print(result2)

# # 示例查询3：根据索引查询行
# # 假设查询索引为5的行
# index_to_query = 5
# result3 = data_frame.iloc[index_to_query]
# print(result3)